1. Field of the Invention
The invention is in the field of application program development and specifically in the field of development and customization of internet applications.
2. Description of the Prior Art
In current internet design practice the elements, layout, and functionality of user interfaces and associated web pages are intended for casual users. These users typically access applications on an irregular basis and therefore prefer a simple and intuitive interface over more powerful alternatives. This preference has lead to the near universal adoption of a basic point and click interaction model in which navigation and control is accomplished by selecting user interface elements with a pointing device such as a mouse. Current design practice is also limited by outdated conceptions related to bandwidth limitations and portability. The point and click interaction model became dominate during a period of more limited bandwidth than is currently available. Similarly, the range of devices used to access user interfaces has grown significantly. Further, many of the new devices have limited memory and processing power.
Current internet design practice and the associated philosophy are detrimental to the development and use of enterprise application programs in an internet setting. These programs are typically used by consistent users who interact with the application on a regular basis and prefer an interface optimized for the most efficient interaction. Consistent users, therefore, desire features and capabilities beyond those encompassed by current internet design practice. For example, application programs designed for use on a standalone computer typically depend on a keyboard based interaction model. In contrast with the mouse based point and click model favored on the internet, the keyboard based interaction model primarily depends on keystrokes entered by a user to communicate to the application. Utilizing keystrokes can be more efficient than the basic point and click interaction model. For instance, in data entry applications, where a user prefers to keep his or her hands located on the keys, having to reach for and manipulate a mouse is often a significant source of distraction and delay.
A desire to accommodate the greatest number of users has focused current internet design practice towards satisfying casual and/or novice users instead of consistent users. The resulting designs are intuitively simple to use but less powerful or efficient than they would be if customized for each enterprise or personalized for each individual user. Unfortunately, in the prior art, the ability to customize an internet based application is severely limited.
Current customization capabilities are generally a function of application architecture. The available architectures include standalone, client/server, and internet configurations. Standalone applications are the simplest, having just one user operating on one computing device. Standalone applications also typically have full access to the computing device for the purposes of storing and accessing configuration data. Client/server applications include both a client and a server. The application is primarily based on a server system but also relies on client system resources such as processing, memory, and data storage. In order to access these resources some part of the application resides on the client. Customization of client/server applications depends on these resources and may also require additional communications between the server and the client.
In contrast to the client/server architecture, pure internet applications use a standard web browser or browser compatible device as their client, and are generally referred to as thin or small client footprint applications. The internet application architecture provides an advantage in that no application code, other than the browser, need be installed or maintained on the client. Internet applications using standard internet protocols and security mechanisms do not require specialized client side code specific to the internet application and place essentially all the processing-intensive activities on an internet server.
Customization of internet applications that depend on a browser or browser compatible thin client is limited in the prior art to selection and layout of predefined elements on a user interface. These predefined elements include buttons, links, fields, forms, graphics, text, and other distinct parts of a user interface or associated web page. For example, some websites allow a user to design a “personal” web page or choose which news stories should appear on a page and how they should be arranged. Beyond appearance and location of custom text, URLs, or graphics, these websites do not allow customization of the predefined elements themselves. Thus, there are no means available by which a user can customize the functional properties of a user interface element.
Functional properties of a user interface element include operations beyond basic point and click navigation and retrieval of further content using a URL. These properties are important to consistent users. For example, they determine the interaction model between the user and any underlying applications. Customizing and personalizing functionality is, therefore, important to meeting the needs of consistent users. The inability to fully customize or personalize internet applications is a limitation of current design practice and has discouraged the implementation of enterprise application programs as internet applications.
Traditional client/server applications have included customization of elements within the application user interface. However, this customization of element functionality requires additional installed or built-in client-side code (e.g., Java® code, ActiveX®, etc.) on the client system. With the inclusion and execution of this client-side code the application is not a purely HTML based internet application. In addition to issues such as download security, licensing requirements, support, and compatibility, client-side code is disadvantageous because it is dependent on the client environment. This environment includes critical factors and limitations such as available memory, underlying operating system type (Windows®, UNIX, etc.), and operating system features. Client-side code also reduces portability because its execution may require computing power beyond what is available in some internet access devices. The amount of required client-side code and computing power required for a client/server application increases with the size and functionality of the application.
The client/server architecture has also been used to internet enable non-web based applications. In this process a client-side interface is used to access Windows®, UNIX, or Linux applications that are executed on a server. The client-side interface is either a custom application or a browser to which proprietary extensions have been added. The interface functions as a remote terminal accessing a pre-existing application. Interaction between the interface and the server-side application is controlled by computer code (i.e. ActiveX or Java code) downloaded or otherwise installed on the client. This client-side computer code is subject to the disadvantages of the traditional client/server architecture, such as dependence on the client side environment, etc.
Conventional standalone or “client side” applications are executed on a single computer with full access to the resources of the computer's operating system. These resources include a wide variety of personalization tools that are not available in browser-based environments. For example, a computer's operating system includes environmental settings (in registry and system files) that can be accessed and modified by executing programs. Standalone applications can also access and save files, including personalization data, on local drives. These resources are used to provide a high degree of customizability to standalone applications. Unfortunately, these resources and the personalization utilities that depend on them are not directly portable to browser based environments. For example, security protocols prevent server side applications from reading and writing to files larger than a cookie on a client system. The degree of personalization found in large standalone applications requires access to template and registry files at a frequency that is currently impractical and generally undesirable in an internet environment. In addition, this approach results in personalization restricted to the individual user or client level.
The limitations of thin clients have prevented the implementation of true internet enterprise applications and the relative perspective of the standalone and client/server environments likewise prevented even their consideration for this purpose. Features important to implementation of enterprise solutions, such as customization of functionality and transformation to a keyboard based interaction model, are simply not available in prior art internet applications.